package com.honghe.system.domain.vo;

import com.honghe.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 客户联系记录统计数据VO
 */
public class CustomerContactStatsVO extends BaseEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 客户名称 */
    private String customerName;

    /** 日期范围 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String[] dateRange;

    /** 总联系次数 */
    private Integer totalContacts = 0;

    /** 本月联系次数 */
    private Integer monthlyContacts = 0;

    /** 平均联系频率 */
    private Double averageFrequency = 0.0;

    /** 活跃客户数 */
    private Integer activeCustomers = 0;

    /** 趋势图日期数据 */
    private List<String> trendDates;

    /** 趋势图联系次数数据 */
    private List<Integer> trendCounts;

    /** 联系方式分布数据 */
    private List<Map<String, Object>> contactTypes;

    /** 分页大小 */
    private Integer pageSize;

    /** 当前页码 */
    private Integer pageNum;
    
    /** 附加参数 */
    private Map<String, Object> params;

    public CustomerContactStatsVO() {
        this.totalContacts = 0;
        this.monthlyContacts = 0;
        this.averageFrequency = 0.0;
        this.activeCustomers = 0;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String[] getDateRange() {
        return dateRange;
    }

    public void setDateRange(String[] dateRange) {
        this.dateRange = dateRange;
    }

    public Integer getTotalContacts() {
        return totalContacts;
    }

    public void setTotalContacts(Integer totalContacts) {
        this.totalContacts = totalContacts != null ? totalContacts : 0;
    }

    public Integer getMonthlyContacts() {
        return monthlyContacts;
    }

    public void setMonthlyContacts(Integer monthlyContacts) {
        this.monthlyContacts = monthlyContacts != null ? monthlyContacts : 0;
    }

    public Double getAverageFrequency() {
        return averageFrequency;
    }

    public void setAverageFrequency(Double averageFrequency) {
        this.averageFrequency = averageFrequency != null ? averageFrequency : 0.0;
    }

    public Integer getActiveCustomers() {
        return activeCustomers;
    }

    public void setActiveCustomers(Integer activeCustomers) {
        this.activeCustomers = activeCustomers != null ? activeCustomers : 0;
    }

    public List<String> getTrendDates() {
        return trendDates;
    }

    public void setTrendDates(List<String> trendDates) {
        this.trendDates = trendDates;
    }

    public List<Integer> getTrendCounts() {
        return trendCounts;
    }

    public void setTrendCounts(List<Integer> trendCounts) {
        this.trendCounts = trendCounts;
    }

    public List<Map<String, Object>> getContactTypes() {
        return contactTypes;
    }

    public void setContactTypes(List<Map<String, Object>> contactTypes) {
        this.contactTypes = contactTypes;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getPageNum() {
        return pageNum;
    }

    public void setPageNum(Integer pageNum) {
        this.pageNum = pageNum;
    }
    
    public Map<String, Object> getParams() {
        return params;
    }

    public void setParams(Map<String, Object> params) {
        this.params = params;
    }
} 